package com.pm.service;

import com.pm.entity.Issue;

import java.util.List;

/**
 * 问题服务接口
 */
public interface IssueService {
    
    /**
     * 创建问题
     * @param issue 问题信息
     * @return 创建的问题
     */
    Issue createIssue(Issue issue);
    
    /**
     * 更新问题
     * @param issue 问题信息
     * @return 更新的问题
     */
    Issue updateIssue(Issue issue);
    
    /**
     * 删除问题
     * @param id 问题ID
     * @return 删除结果
     */
    boolean deleteIssue(String id);
    
    /**
     * 根据ID查找问题
     * @param id 问题ID
     * @return 问题信息
     */
    Issue findById(String id);
    
    /**
     * 获取所有问题
     * @return 问题列表
     */
    List<Issue> getAllIssues();
    
    /**
     * 根据项目ID查找问题
     * @param projectId 项目ID
     * @return 问题列表
     */
    List<Issue> findByProjectId(String projectId);
    
    /**
     * 根据报告人ID查找问题
     * @param reporterId 报告人ID
     * @return 问题列表
     */
    List<Issue> findByReporterId(String reporterId);
    
    /**
     * 根据分配人ID查找问题
     * @param assigneeId 分配人ID
     * @return 问题列表
     */
    List<Issue> findByAssigneeId(String assigneeId);
    
    /**
     * 根据状态查找问题
     * @param status 问题状态
     * @return 问题列表
     */
    List<Issue> findByStatus(String status);
    
    /**
     * 根据优先级查找问题
     * @param priority 优先级
     * @return 问题列表
     */
    List<Issue> findByPriority(String priority);
    
    /**
     * 更新问题状态
     * @param id 问题ID
     * @param status 新状态
     * @return 更新结果
     */
    boolean updateIssueStatus(String id, String status);
    
    /**
     * 分配问题
     * @param id 问题ID
     * @param assigneeId 分配人ID
     * @return 分配结果
     */
    boolean assignIssue(String id, String assigneeId);
    
    /**
     * 解决问题
     * @param id 问题ID
     * @return 解决结果
     */
    boolean resolveIssue(String id);
}